/*
 *  Copyright 2013 National Institute of Advanced Industrial Science and Technology
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package org.sss.common;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.sss.util.BytesComparator;

public class DataChunk implements Iterable<EncodedBucket> {
  @SuppressWarnings("unused")
  private static Logger logger = LoggerFactory.getLogger(DataChunk.class);

  private final EncodedBucket[] buckets;
  private final int partition;

  public DataChunk(int partition, EncodedBucket[] buckets) {
    this.buckets = buckets;
    this.partition = partition;
  }

  public int size() {
    return buckets.length;
  }

  public int getPartition() {
    return partition;
  }

  @Override
  public Iterator<EncodedBucket> iterator() {
    return Arrays.asList(buckets).iterator();
  }

  public void sort() {
    Arrays.sort(buckets, new Comparator<EncodedBucket>() {
        @Override
        public int compare(EncodedBucket o1, EncodedBucket o2) {
          if (o1.subhash < o2.subhash) return -1;
          else if (o1.subhash > o2.subhash) return 1;
          else return BytesComparator.compare(o1.key, 0, o1.key.length, o2.key, 0, o2.key.length);
        }
      });
  }
}
